% plot_cpp_results.m
% 主脚本：读取C++导出的可视化数据并绘制图表
% 
% 使用方法：
%   plot_cpp_results('Conv_Case0', 'output/visualizations')

function plot_cpp_results(case_name, data_dir)
    if nargin < 1
        case_name = 'Conv_Case0';
    end
    if nargin < 2
        data_dir = 'output/visualizations';
    end
    
    fprintf('=== 开始绘制 %s 的可视化结果 ===\n', case_name);
    
    % 创建输出目录
    output_dir = fullfile('matlab_output', case_name);
    if ~exist(output_dir, 'dir')
        mkdir(output_dir);
    end
    
    % 1. 绘制帕累托前沿图
    try
        pareto_file = fullfile(data_dir, [case_name '_pareto_solutions.csv']);
        if exist(pareto_file, 'file')
            fprintf('正在绘制帕累托前沿图...\n');
            plot_pareto_front_from_csv(pareto_file, output_dir, case_name);
        else
            warning('未找到帕累托前沿数据文件: %s', pareto_file);
        end
    catch ME
        warning('帕累托前沿图绘制失败: %s', ME.message);
    end
    
    % 2. 绘制内存分配甘特图
    try
        alloc_file = fullfile(data_dir, [case_name '_memory_allocation_history.csv']);
        if exist(alloc_file, 'file')
            fprintf('正在绘制内存分配甘特图...\n');
            plot_memory_gantt_from_csv(alloc_file, output_dir, case_name);
        else
            warning('未找到内存分配历史数据文件: %s', alloc_file);
        end
    catch ME
        warning('内存分配甘特图绘制失败: %s', ME.message);
    end
    
    % 3. 绘制内存使用统计图
    try
        stats_file = fullfile(data_dir, [case_name '_memory_usage_stats.csv']);
        if exist(stats_file, 'file')
            fprintf('正在绘制内存使用统计图...\n');
            plot_memory_stats_from_csv(stats_file, output_dir, case_name);
        else
            warning('未找到内存使用统计数据文件: %s', stats_file);
        end
    catch ME
        warning('内存使用统计图绘制失败: %s', ME.message);
    end
    
    % 4. 绘制Buffer生命周期图
    try
        lifetime_file = fullfile(data_dir, [case_name '_buffer_lifetimes.csv']);
        if exist(lifetime_file, 'file')
            fprintf('正在绘制Buffer生命周期图...\n');
            plot_buffer_lifetimes_from_csv(lifetime_file, output_dir, case_name);
        else
            warning('未找到Buffer生命周期数据文件: %s', lifetime_file);
        end
    catch ME
        warning('Buffer生命周期图绘制失败: %s', ME.message);
    end
    
    % 5. 绘制收敛曲线
    try
        conv_file = fullfile(data_dir, [case_name '_convergence_history.csv']);
        if exist(conv_file, 'file')
            fprintf('正在绘制优化收敛曲线...\n');
            plot_convergence_from_csv(conv_file, output_dir, case_name);
        else
            warning('未找到收敛历史数据文件: %s', conv_file);
        end
    catch ME
        warning('优化收敛曲线绘制失败: %s', ME.message);
    end
    
    fprintf('=== %s 可视化结果绘制完成，输出目录: %s ===\n', case_name, output_dir);
end
